package com.cskaoyan.javase.object._7wrapper._0introduction;

/**
 * 包装类型的引入
 * Integer.MAX_VALUE
 * Integer是int类型的包装类型,Integer.MAX_VALUE是int类型的最大值
 *
 * Integer.MAX_VALUE的二进制是0111 1111 1111 1111 1111 1111 1111 1111
 * Integer.MIN_VALUE的二进制是1000 0000 0000 0000 0000 0000 0000 0000
 * Integer.MAX_VALUE + 1 = Integer.MIN_VALUE
 *
 * 什么是包装类？
 * 大家都知道：Java是面向对象的语言，Java当中万物皆对象。
 * 但这句话并不严谨，因为Java不是完全面向对象的编程语言。
 * 因为Java还有基本数据类型变量，它们不是对象。
 *
 * 所以为了弥补基本数据类型变量非对象的尴尬境地，并且我们确有需求把基本数据类型变量也当成一个对象使用。
 * Java引入包装类的技术。
 * 所谓包装类，就是把基本数据类型包装成引用数据类型，变成一个个对象。
 *
 * 以下包装类和基本数据类型对应关系：
 * 包装类型对照表
 *   基本数据类型 	       对应包装类
 *    byte  	  java.lang.Byte
 *    short 	  java.lang.Short
 *     int  	 java.lang.Integer
 *    long  	  java.lang.Long
 *    float 	  java.lang.Float
 *   double 	 java.lang.Double
 *   boolean	 java.lang.Boolean
 *    char  	java.lang.Character
 *
 * 除此之外，还有一个比较独特的包装类型：返回值类型中的void对应包装类型Void，它的主要作用是：
 * 在反射中，描述没有返回值的void方法的返回值类型。
 * Void是很少被使用的,而且它不能实例化.
 *
 * @since 09:24
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    static int end = Integer.MAX_VALUE;
    static int start = end - 5;

    /*
    答案可能是:
        6
        5
        死循环
        报错

      由于int类型最大值+1等于最小值,所以这里就死循环了.
     */
    public static void main(String[] args) {
        int count = 0;
        for (int i = start; i < end; i++) {
            count++;
        }
        System.out.println(count);
    }
}
